package cn.edu.wynu.d3_inner_class3;

// 1、匿名内部类在开发中的使用场景：通常作为一个参数传输给方法。

/*
2、匿名内部类有啥特点 ?
匿名内部类本质就是一个子类，并会立即创建出一个子类对象

3、匿名内部类有啥作用、应用场景?
可以更方便的创建出一个子类对象。
匿名内部类通常作为一个参数传输给方法。
*/

public class Test2 {
    public static void main(String[] args) {
        // 掌握匿名内部类的常见应用场景
        /*
        Swimming s1 = new Swimming(){
            @Override
            public void swim() {
                System.out.println("狗会游泳！");
            }
        };
        go(s1);
        */

        // 简化
        go(new Swimming(){
            @Override
            public void swim() {
                System.out.println("狗会游泳！");
            }
        });
    }

    // 设计一个方法，可以接收Swimming接口的一切实现类对象进来参加游泳比赛。
    public static void go(Swimming s){
        System.out.println("...开始比赛...");
        s.swim();
    }
}

// 小狗和小猫都要参加游泳比赛
interface Swimming {
    void swim();
}